Check and manipulate graph-related properties of an object of class bn.
# check whether the graph is acyclic/completely directed.
acyclic(x, directed = FALSE, debug = FALSE)
directed(x)
valid.dag(x, debug = FALSE)
valid.cpdag(x, debug = FALSE)
valid.ug(x, debug = FALSE)
# check whether there is a path between two nodes.
path.exists(x, from, to, direct = TRUE, underlying.graph = FALSE, debug = FALSE)
# build the skeleton or a complete orientation of the graph.
skeleton(x)
pdag2dag(x, ordering)
# build a subgraph spanning a subset of nodes.
subgraph(x, nodes)
# perturb a network by random arc additions, removals and reversals.
perturb(x, nops, ops = c("set", "drop", "reverse"), maxp = Inf, debug = FALSE)acyclic(), path() and directed() return a boolean value.
skeleton(), pdag2dag(), subgraph() and perturb()
return an object of class bn.
valid.dag(), valid.cpdag() and valid.ug() return a
boolean value.
an object of class bn. skeleton(), acyclic(),
directed() and path.exists() also accept objects of class
bn.fit.
a character string, the label of a node.
a character string, the label of a node (different from
from).
a boolean value. If FALSE, ignore any arc between
from and to when looking for a path.
a boolean value. If TRUE, the underlying
undirected graph is used instead of the (directed) one from the x
argument.
the labels of all the nodes in the graph; their order is the node ordering used to set the direction of undirected arcs.
the labels of the nodes that induce the subgraph.
a boolean value. If TRUE, only completely directed
cycles are considered. Otherwise, undirected arcs will also be considered
and treated as arcs present in both directions.
a positive integer value, the number of arc operations applied to the network to perturb it.
a vector of character strings, one or more of "set",
"drop" or "reverse". It defines which arc operations are
applied to the network to perturb it.
the maximum number of parents allowed for a node after each arc
operation. The default value is Inf.
a boolean value. If TRUE, a lot of debugging output is
printed. Otherwise, the function is completely silent.
Marco Scutari
Bang-Jensen J, Gutin G (2009). Digraphs: Theory, Algorithms and Applications. Springer, 2nd edition.
Andersson SA, Madigan D, Perlman MD (1997). "A Characterization of Markov Equivalence Classes for Acyclic Digraphs." The Annals of Statistics, 25(2):505--541.
data(learning.test)
cpdag = pc.stable(learning.test)
acyclic(cpdag)
directed(cpdag)
dag = pdag2dag(cpdag, ordering = LETTERS[1:6])
dag
directed(dag)
skeleton(dag)
perturb(dag, nops = 3, debug = TRUE)
Run the code above in your browser using DataLab